package com.bckj.fastboot.core.extra.license;

import lombok.RequiredArgsConstructor;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;

@Aspect
@RequiredArgsConstructor
public class LicenseCheckAspect {

    private final LicenseVerifyService licenseVerifyService;

    // 环绕通知，在标记了@CheckLicense的方法执行前后触发
    @Around("@annotation(checkLicense)")
    public Object checkLicense(ProceedingJoinPoint joinPoint, CheckLicense checkLicense) throws Throwable {
        // 执行 License 校验
        boolean isValid = licenseVerifyService.verify();

        if (!isValid) {
            // 校验失败，可以抛出异常或返回特定结果
            throw new RuntimeException("许可证校验失败，无权访问此功能。");
            // 或者返回一个统一的错误结果对象
            // return Result.error("许可证无效");
        }

        // 校验通过，继续执行原方法
        return joinPoint.proceed();
    }
}